1 TADPOLE and BSWiMS

1.0.1 Loading the libraries

library("FRESA.CAD")
library(survival)
library(readxl)
library(igraph)
op <- par(no.readonly = TRUE)
pander::panderOptions('digits', 3)
pander::panderOptions('table.split.table', 400)
pander::panderOptions('keep.trailing.zeros',TRUE)

1.1 Loading BSWiMS Results


load("./TADPOLE_BSWIMS_Results.RData")

pander::pander(table(TADPOLE_Conv_TRAIN$status))
0 1
261 133
pander::pander(table(TADPOLE_Conv_TEST$status))
0 1
112 58
par(op)

1.1.1 Cross Validation


cvLASSORaw <- randomCV(TADPOLECrossMRI,
                 Surv(TimeToEvent,status)~.,
                 fittingFunction= LASSO_1SE,
                 trainSampleSets= cvBSWiMSRaw$trainSamplesSets,
 )

……….10 Tested: 552 Avg. Selected: 8.8 Min Tests: 1 Max Tests: 10 Mean Tests: 5.036232 . MAD: 1.847167 ……….20 Tested: 562 Avg. Selected: 9.05 Min Tests: 1 Max Tests: 17 Mean Tests: 9.893238 . MAD: 2.368578 ……….30 Tested: 564 Avg. Selected: 8.7 Min Tests: 3 Max Tests: 25 Mean Tests: 14.78723 . MAD: 2.34703 ……….40 Tested: 564 Avg. Selected: 8.95 Min Tests: 4 Max Tests: 32 Mean Tests: 19.71631 . MAD: 2.622609 ……….50 Tested: 564 Avg. Selected: 9.16 Min Tests: 6 Max Tests: 39 Mean Tests: 24.64539 . MAD: 2.539005

pander::pander(cbind(cvLASSORaw$featureFrequency[cvLASSORaw$featureFrequency>20]))
ADAS13 50
FAQ 50
RAVLT_immediate 49
ABETA 43
TAU 28
M_ST32CV 27
M_ST24CV 24
M_ST29SV 23

prBin <- predictionStats_binary(cvLASSORaw$survMedianTrain[,c(2,3)],"TRAIN: MCI to  AD Conversion")


survmtest <- cvLASSORaw$survMedianTest
survmtest <- survmtest[complete.cases(survmtest),]

prBin <- predictionStats_binary(survmtest[,c(2,3)],"LASSO: MCI to  AD Conversion")

pander::pander(prBin$aucs)
est lower upper
0.875 0.847 0.904
pander::pander(prBin$CM.analysis$tab)
  Outcome + Outcome - Total
Test + 158 84 242
Test - 33 289 322
Total 191 373 564

par(op)
ho <- mean(survmtest$Outcome)
timeInterval <- mean(survmtest[survmtest$Outcome==0,"Times"])
pgzero <- ppoisGzero(survmtest$LinearPredictorsMedian,ho)
rsdata <- cbind(survmtest$Outcome,pgzero,survmtest$Times)
riskAnalysis <- RRPlot(rsdata,riskTimeInterval=timeInterval,title="LASSO")

[1] 0.3386525 [1] 0.3386525 1.0000000 [1] 0.9906981 0.9625794 0.3942505 3.4912148 13.9578736 29.1869870 0.0000000 [8] 1.0000000


pander::pander(riskAnalysis$c.index)
  • C Index: 0.846

  • Dxy: 0.693

  • S.D.: 0.0246

  • n: 564

  • missing: 0

  • uncensored: 191

  • Relevant Pairs: 142910

  • Concordant: 120960

  • Uncertain: 174472

  • cstatCI:

    mean.C Index median lower upper
    0.846 0.846 0.82 0.869
pander::pander(riskAnalysis$ROCAnalysis$aucs)
est lower upper
0.875 0.847 0.904
pander::pander(riskAnalysis$cenAUC)

0.897

pander::pander(riskAnalysis$ROCAnalysis$ClassMetrics)
  • accci:

    50% 2.5% 97.5%
    0.789 0.754 0.823
  • senci:

    50% 2.5% 97.5%
    0.64 0.57 0.708
  • speci:

    50% 2.5% 97.5%
    0.866 0.83 0.9
  • aucci:

    50% 2.5% 97.5%
    0.753 0.714 0.791
  • berci:

    50% 2.5% 97.5%
    0.247 0.209 0.286
  • preci:

    50% 2.5% 97.5%
    0.71 0.636 0.774
  • F1ci:

    50% 2.5% 97.5%
    0.672 0.614 0.727
pander::pander(riskAnalysis$surdif)
Call: survival::Surv(eTime, eStatus) ~ class Chisq = 293.389809 on 2 degrees of freedom, p = 0.000000
  N Observed Expected (O-E)^2/E (O-E)^2/V
class=0 311 28 127.6 77.72 242.05
class=1 81 41 26.5 7.93 9.28
class=2 172 122 36.9 196.05 252.21

1.1.2 Cross Validation RIDGE


cvRIDGERaw <- randomCV(TADPOLECrossMRI,
                 Surv(TimeToEvent,status)~.,
                 fittingFunction= GLMNET_RIDGE_1SE,
                 trainSampleSets= cvBSWiMSRaw$trainSamplesSets,
 )

……….10 Tested: 552 Avg. Selected: 275.6 Min Tests: 1 Max Tests: 10 Mean Tests: 5.036232 . MAD: 7.812309 ……….20 Tested: 562 Avg. Selected: 277.8 Min Tests: 1 Max Tests: 17 Mean Tests: 9.893238 . MAD: 8.190561 ……….30 Tested: 564 Avg. Selected: 276.2667 Min Tests: 3 Max Tests: 25 Mean Tests: 14.78723 . MAD: 8.211094 ……….40 Tested: 564 Avg. Selected: 276.1 Min Tests: 4 Max Tests: 32 Mean Tests: 19.71631 . MAD: 8.308367 ……….50 Tested: 564 Avg. Selected: 276.16 Min Tests: 6 Max Tests: 39 Mean Tests: 24.64539 . MAD: 8.364073


prBin <- predictionStats_binary(cvRIDGERaw$survMedianTrain[,c(2,3)],"TRAIN: MCI to  AD Conversion")


survmtest <- cvRIDGERaw$survMedianTest
survmtest <- survmtest[complete.cases(survmtest),]

prBin <- predictionStats_binary(survmtest[,c(2,3)],"RIDGE: MCI to  AD Conversion")

pander::pander(prBin$aucs)
est lower upper
0.591 0.537 0.645
pander::pander(prBin$CM.analysis$tab)
  Outcome + Outcome - Total
Test + 114 189 303
Test - 77 184 261
Total 191 373 564

par(op)
ho <- mean(survmtest$Outcome)
timeInterval <- mean(survmtest[survmtest$Outcome==0,"Times"])
pgzero <- ppoisGzero(survmtest$LinearPredictorsMedian,ho)
rsdata <- cbind(survmtest$Outcome,pgzero,survmtest$Times)
riskAnalysis <- RRPlot(rsdata,riskTimeInterval=timeInterval,title="RIDGE")

[1] 0.3386525 [1] 0.3386525 1.0000000 [1] 0.5946290 0.4987360 0.3942505 3.4912148 186.9714797 107.1554930 [7] 0.0000000 0.0000000


pander::pander(riskAnalysis$c.index)
  • C Index: 0.572

  • Dxy: 0.144

  • S.D.: 0.0422

  • n: 564

  • missing: 0

  • uncensored: 191

  • Relevant Pairs: 142910

  • Concordant: 81723

  • Uncertain: 174472

  • cstatCI:

    mean.C Index median lower upper
    0.572 0.571 0.531 0.614
pander::pander(riskAnalysis$ROCAnalysis$aucs)
est lower upper
0.535 0.485 0.584
pander::pander(riskAnalysis$cenAUC)

0.54

pander::pander(riskAnalysis$ROCAnalysis$ClassMetrics)
  • accci:

    50% 2.5% 97.5%
    0.564 0.523 0.603
  • senci:

    50% 2.5% 97.5%
    0.479 0.411 0.552
  • speci:

    50% 2.5% 97.5%
    0.609 0.558 0.659
  • aucci:

    50% 2.5% 97.5%
    0.544 0.5 0.585
  • berci:

    50% 2.5% 97.5%
    0.456 0.415 0.5
  • preci:

    50% 2.5% 97.5%
    0.386 0.324 0.446
  • F1ci:

    50% 2.5% 97.5%
    0.427 0.368 0.483
pander::pander(riskAnalysis$surdif)
Call: survival::Surv(eTime, eStatus) ~ class Chisq = 8.796285 on 1 degrees of freedom, p = 0.003018
  N Observed Expected (O-E)^2/E (O-E)^2/V
class=0 327 100 119.7 3.25 8.8
class=1 237 91 71.3 5.46 8.8

1.1.3 Learning

bConvmlLZO <- LASSO_1SE(Surv(TimeToEvent,status)~.,TADPOLE_Conv_TRAIN)

pander::pander(bConvmlLZO$selectedfeatures)

ADAS13, MMSE, RAVLT_immediate, RAVLT_perc_forgetting, FAQ, APOE4, ABETA, PTAU, M_ST13TA, M_ST56SA, M_ST24CV, M_ST32CV, M_ST40CV, M_ST29SV and RD_ST31TA


ptestl <- predict(bConvmlLZO,TADPOLE_Conv_TEST)
cval <- mean(ptestl)
ptestl <- predict(bConvmlLZO,TADPOLE_Conv_TEST) - cval

boxplot(ptestl~TADPOLE_Conv_TEST$status)

ptestr <- exp(ptestl)

predsurv <- cbind(TADPOLE_Conv_TEST$TimeToEvent,
                  TADPOLE_Conv_TEST$status,
                  ptestl,
                  ptestr)

prSurv <- predictionStats_survival(predsurv,"MCI to  AD Conversion")

pander::pander(prSurv$CIRisk)
median lower upper
0.889 0.852 0.92
pander::pander(prSurv$CILp)
median lower upper
0.896 0.845 0.939
pander::pander(prSurv$spearmanCI)
50% 2.5% 97.5%
0.568 0.37 0.723

prBin <- predictionStats_binary(cbind(TADPOLE_Conv_TEST$status,ptestl),"MCI to  AD Conversion")

pander::pander(prBin$aucs)
est lower upper
0.896 0.85 0.943
pander::pander(prBin$CM.analysis$tab)
  Outcome + Outcome - Total
Test + 54 26 80
Test - 4 86 90
Total 58 112 170

par(op)

1.1.4 Learning RIDGE

bConvmlRIDGE <- GLMNET_RIDGE_1SE(Surv(TimeToEvent,status)~.,TADPOLE_Conv_TRAIN)

ptestl <- predict(bConvmlRIDGE,TADPOLE_Conv_TEST)
cval <- mean(ptestl)
ptestl <- predict(bConvmlRIDGE,TADPOLE_Conv_TEST) - cval

boxplot(ptestl~TADPOLE_Conv_TEST$status)

ptestr <- exp(ptestl)

predsurv <- cbind(TADPOLE_Conv_TEST$TimeToEvent,
                  TADPOLE_Conv_TEST$status,
                  ptestl,
                  ptestr)

prSurv <- predictionStats_survival(predsurv,"MCI to  AD Conversion")

pander::pander(prSurv$CIRisk)
median lower upper
0.84 0.795 0.882
pander::pander(prSurv$CILp)
median lower upper
0.86 0.806 0.91
pander::pander(prSurv$spearmanCI)
50% 2.5% 97.5%
0.355 0.0891 0.581

prBin <- predictionStats_binary(cbind(TADPOLE_Conv_TEST$status,ptestl),"MCI to  AD Conversion")

pander::pander(prBin$aucs)
est lower upper
0.86 0.805 0.914
pander::pander(prBin$CM.analysis$tab)
  Outcome + Outcome - Total
Test + 50 35 85
Test - 8 77 85
Total 58 112 170

par(op)

1.1.5 Saving the enviroment

save.image("./TADPOLE_LASSO_Results.RData")